﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using IndignadoFramework.BackOffice.Models;
using IndignadoFramework.BackBone.Model;
using IndignadoFramework.BackBone.InternalServices;
using IndignadoFramework.BackBone.InternalServices.Implementacion;
using IndignadoFramework.BackBone.DTO;

namespace IndignadoFramework.BackOffice.Controllers
{
    public class ContenidoController : Controller
    {
        private ContenidoUsuarioServices _contenidos;
        private IEnumerable<ContenidoModelDTO> _contenidosEliminar;
        private IEnumerable<UsuarioModelDTO> _usuarios;

        public ContenidoController()
            : this(new ContenidoUsuarioServicesImpl())
        {
        }

        public ContenidoController(ContenidoUsuarioServices contenidos)
        {
            _contenidos = contenidos;
        }

        //
        // GET: /Contenido/PrincipalAdministracion
        [Authorize]
        public ActionResult PrincipalAdministracion()
        {
            return View();
        }

        //
        // GET: /Contenido/AdministrarContenidos
        [Authorize]
        public PartialViewResult AdministrarContenidos(int? pagina)
        {
            // Contenidos
            _contenidosEliminar = _contenidos.getContenidosInadecuados(true);
            if (pagina.HasValue)
            {
                ViewBag.PaginaContenido = pagina.Value;
            }
            else
            {
                ViewBag.PaginaContenido = 0;
            }
            return PartialView(_contenidosEliminar);
        }

        //
        // POST: /Contenido/AdministrarContenidos
        [HttpPost]
        [Authorize]
        public PartialViewResult AdministrarContenidos()
        {
            _contenidos.deleteContenidos(_contenidos.getContenidosInadecuados(true));
            _contenidosEliminar = _contenidos.getContenidosInadecuados(true);
            return PartialView(_contenidosEliminar);
        }

        //
        // GET: /Contenido/AdministrarUsuarios
        [Authorize]
        public PartialViewResult AdministrarUsuarios(int? pagina)
        {
            // Contenido del Movimiento
            _usuarios = _contenidos.updateUsuarios(false);
            if (pagina.HasValue)
            {
                ViewBag.PaginaContenido = pagina.Value;
            }
            else
            {
                ViewBag.PaginaContenido = 0;
            }
            return PartialView(_usuarios);
        }

        //
        // POST: /Contenido/AdministrarUsuarios
        [HttpPost]
        [Authorize]
        public PartialViewResult AdministrarUsuarios()
        {
            // Contenido del Movimiento
            _usuarios = _contenidos.updateUsuarios(true);
            _usuarios = _contenidos.updateUsuarios(false);
            return PartialView(_usuarios);
        }
    }
}